我正在努力跟上Tekpub在rails截屏视频上构建您自己的博客。我仍然是一个ruby新手,问题是我安装了Rails3,而Rob使用的是旧版本(在我的脑海中:版本2.3.2)。我知道如何使用geminstallrails--version=2.3.2获取该版本的rails,但是当我键入railsnew时,应用程序的版本是rails3.如何让这个特定的应用程序与旧版本一起工作?我知道这与rvm有关,但除了基本的rvmuse操作外,我不知道该怎么做。 最佳答案 尝试,rvmuservmgemsetcreaterails2.3.2rv
我正在尝试设置用于开发Railsgem的开发环境。我想在开发模式下从本地源加载gem,在生产模式下通过rubygems加载gem。我想做如下事情:gem文件group:productiondogem'my_gem','1.0.0'endgroup:developmentdogem'my_gem',:path=>'~/apps/my_gem'end当我运行bundle命令时,bundler提示你不能加载同一个gem两次。有没有办法根据Rails环境要求不同版本的gem? 最佳答案 我遇到过同样的问题,并且是这样解决的:ifENV[
这是什么意思?在一个项目的说明中,它说“卡住Railsgems”。这与卡住Rails版本有何不同?什么是卡住? 最佳答案 如果您使用的gem的作者之一引入了该gem的新版本,则新版本可能会引入向后不兼容的更改,从而破坏您的代码。卡住gem会将其放入应用程序的vendor文件夹中,并且不会自行自动更新。Rails将使用此版本的gem。这允许您为其他应用程序更新系统上的gem,同时让您唯一的应用程序使用您一直使用的gem版本,因此是稳定的。这也适用于railsgem本身,因为较新版本的rails最终可能会导致您的应用程序中的某些内容崩溃
我有一个修改数据库中记录的后台进程。模型使用如下方式连接到数据库:dbconfig=YAML::load(File.open('database.yml'))ActiveRecord::Base.establish_connection(dbconfig["development"])classClcar所有模型类的顶部都有这些行。我同意这是一种糟糕的做法。有没有更好的方法来连接到模型类?如何将连接传递给模型?我希望能够在不同的环境(比如“生产”)中运行我的后台进程。我该如何实现? 最佳答案 我会在您的后台进程开始时设置一次连接。一
我们一直在努力找出如何通过识别内存消耗大的gem并寻找替代方案或解决方案来减少我们的Rails应用程序的启动内存占用量。但在OSX上有一种行为令我感到莫名其妙。使用全新生成的Rails应用程序(railsnewmemoryusage),没有Gemfile,没有模型,没有数据,也没有事务,启动railsc时内存每次启动时,对应的ruby进程的OSX显示都会有所不同,从低至60MB到高至65MB,没有明显的模式说明为什么同一个应用程序每次执行可能需要更少或更多的内存。我想这在某种程度上与Ruby分配内存的方式有关,但我不完全清楚为什么对于相同的代码且没有变量处理,它的内存分配会变化如此
我有一个简单的代码片段,它定义了一个方法(在Ruby的主对象上),然后检查它是否已定义。puts"#{self}#{self.class}"deffoo;endputsself.methods.include?(:foo)当我在Ruby控制台中运行它时。我得到:mainObjecttrue如果我将此代码粘贴到.rb文件中并像这样运行该文件rubytest_script.rb,我会得到以下输出mainObjectfalse我不明白为什么我会看到这种行为。方法正在在脚本中定义,因为我可以调用该方法。我都在Ruby2.3.4上运行 最佳答案
我的数据库使用PostgreSQL。我在Mac上开发,需要这一行:#db/schema.rbonMacenvironmentenable_extension"plpgsql"但是,在Linux上不需要扩展。在这种情况下,我们是否应该忽略schema.rb并通过db:migrate为开发和生产环境生成它? 最佳答案 据我所知,问题是自动生成的schema.rb在生产和开发中会有所不同,因此会导致git中的文件发生变化,因为这一行。该行是由mac上的postgres适配器生成的吗?如果它是手动添加的,我会尝试将它放在其他地方,也许在初始
在用C为ruby编写扩展时,我对遵循正确的命名约定很感兴趣。具体来说,我指的是将_p添加到谓词的函数名称以及为变量添加前缀m代表模块,c代表类等等。例如,如果我们想在C语言中定义一个像下面这样的谓词方法,我们应该在定义该方法的函数中使用_p作为后缀。classMyClassdefawesome?trueendend在C中:staticVALUEmy_extension_my_class_awesome_p(VALUEself){returnQtrue;}voidInit_my_extension(void){VALUEcMyClass=rb_define_class("MyClas
Bundle无法安装better_errors。Gem::InstallError:better_errorsrequiresRubyversion>=2.0.0.Anerroroccurredwhileinstallingbetter_errors(2.0.0),andBundlercannotcontinue.Makesurethat`geminstallbetter_errors-v'2.0.0'`succeedsbeforebundling.但是geminstallbetter_errors工作正常。ruby--version表示ruby2.0.0p353(2013-11-22
在xcode中,我有一个运行ruby脚本的“运行脚本”构建阶段。但是,似乎xcode正在尝试使用默认的mac1.8版本的ruby而不是最新版本来运行它。鉴于脚本需要一个gem,它失败并出现require错误并且错误中的路径指向/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems/显然,该路径中的1.8让我产生了怀疑。如果我打开终端并运行命令ruby-v然后它会正确返回2.0.0p0我使用RVM安装并设置为默认值。如何让Xcode在正确的位置查找?还是我误解了这个错误?更新